import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class Demo1 {
	public static void main(String[] args) throws IOException {
//		File file=new File("D:/test.txt");
//		System.out.println(file.exists());
//		System.out.println(file.getPath());
//		System.out.println(file.getCanonicalFile());
//		System.out.println(file.getAbsolutePath());
//		if(!file.exists()) {
//			boolean flg=file.createNewFile();
//			if(flg) {
//				System.out.println("创建成功");
//			}
//		}
		File file=new File("D:/test.txt");
		System.out.println(file.exists());
		Reader reader=new FileReader("D:/test.txt");
		while (true) {
			char [] buf=new char [3];
			//len表示一次读取到的字符个数，尽可能的将这个数组填满，然后再进行输出
            int len = reader.read(buf);
           if (len == -1) {
               // 读取完毕
               break;
           }
		   for(int i = 0;i<len;i++ ) {
			   System.out.print(" "+buf[i]);
		   }
		}
		//在使用完一个文件的时候，一定将文件关闭，
		//这种完毕文件还不是最好的办法，当有异常出现的的时候，程序直接中断，而不会关闭文件，
		//不关闭文件的时候，文件描述符会过一段时间，生成一个文件，占满内存，内存满了，程序就会出现问题
		reader.close();
		//这种的关闭方法不优雅
//		try{
//			while (true) {
//				char [] buf=new char [3];
//				//len表示一次读取到的字符个数，尽可能的将这个数组填满，然后再进行输出
//				int len = reader.read(buf);
//				if (len == -1) {
//					// 读取完毕
//					break;
//				}
//				for(int i = 0;i<len;i++ ) {
//					System.out.print(" "+buf[i]);
//				}
//			}
//		} finally {
//			reader.close();
//		}
		try(Reader reader1=new FileReader("D:/test.txt")) {
			while (true) {
				char [] buf =new char [3];
				int len1=reader.read(buf);
				if(len1==-1) {
					break;
				}
				System.out.println("n = " + len1);
				for (int i = 0; i < len1; i++) {
					System.out.println(buf[i]);
				}
			}
		}
	}
}
